<?php
/**
 * Класс Log
 *
 * Выдача сообщений программы на экран и в текстовый файл.
 *
 * @author Овчарик Игорь Николаевич <oiliss@bk.ru>
 * @version 0.1
 */


class Log
{
    /**
     * @staticvar string имя лог-файла
     */
    private static $logFileName;

    /**
     * Запись сообщения программы.
     * При первом обращении генерируется имя лог-файла
     * и при необходимости создается каталог расположения лог-файлов.
     *
     * @static
     * @param string $str сообщение программы
     * @return
     */
    static function write( $str )
    {
        if ( empty( self::$logFileName ) ) {

            $now               = time();
            self::$logFileName = Common::LOG_DIR . "/" . date( "Y_m_d", $now ) . "_log.txt";

            if ( ! file_exists( Common::LOG_DIR ) ) {
                mkdir( Common::LOG_DIR, 0777, true );
            }

            Common::$currentDateTime = date( "Y.m.d H:i:s", $now );
            self::toFile( str_pad( "== [ " . Common::$currentDateTime . " ] ", Common::DOCUMENT_WIDTH, "=" ) );
        }
        self::toFile( $str );
        self::toConsole( $str );
    }

    /**
     * Запись в файл.
     *
     * @static
     * @param string $str сообщение программы
     * @return
     */
    private static function toFile( $str )
    {
        file_put_contents( self::$logFileName, $str . "\n", FILE_APPEND );
    }

    /**
     * Выдача на экран.
     *
     * @static
     * @param string $str сообщение программы
     * @return
     */
    private static function toConsole( $str )
    {
        $str = iconv( Common::WEB_CODE_PAGE, Common::USER_CODE_PAGE, $str );
        echo $str . "\n";
    }
}